/**
 * 全站路由配置
 *
 * 建议:
 * 1. 代码中路由统一使用name属性跳转(不使用path属性)
 */
import Vue from 'vue'
import Router from 'vue-router'
import http from '@/utils/httpRequest'
import {
  isURL
} from '@/utils/validate'
import {
  clearLoginInfo
} from '@/utils'

Vue.use(Router)

// 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
const _import = require('./import-' + process.env.NODE_ENV)

// 全局路由(无需嵌套上左右整体布局)
const globalRoutes = [{
    path: '/404',
    component: _import('common/404'),
    name: '404',
    meta: {
      title: '404未找到'
    }
  },
  {
    path: '/login',
    component: _import('common/login'),
    name: 'login',
    meta: {
      title: '登录'
    }
  },
  {
    path: '/theme',
    component: _import('common/theme'),
    name: 'theme',
    meta: {
      title: '测试'
    }
  },
  // 废代码，测试使用
  {
    path: '/log',
    component: _import('log/ceshi'),
    name: 'ceshi',
    meta: {
      title: '测试'
    }
  },
]

// 主入口路由(需嵌套上左右整体布局)
const mainRoutes = {
  path: '/',
  component: _import('main'),
  name: 'main',
  redirect: {
    name: 'home'
  },
  meta: {
    title: '主入口整体布局'
  },
  children: [
    // 通过meta对象设置路由展示方式
    // 1. isTab: 是否通过tab展示内容, true: 是, false: 否
    // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
    // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
    {
      path: '/home',
      component: _import('common/home'),
      name: 'home',
      meta: {
        title: '首页'
      }
    },
    {
      path: '/theme',
      component: _import('common/theme'),
      name: 'theme',
      meta: {
        title: '主题'
      }
    },
    // { path: '/demo-echarts', component: _import('demo/echarts'), name: 'demo-echarts', meta: { title: 'demo-echarts', isTab: true } },
    // { path: '/demo-ueditor', component: _import('demo/ueditor'), name: 'demo-ueditor', meta: { title: 'demo-ueditor', isTab: true } }
  ],
  beforeEnter(to, from, next) {
    let administrator = sessionStorage.getItem('administrator')
    if (administrator == null) {
      clearLoginInfo()
      next({
        name: 'login'
      })
    } else {
      next()
    }
    // let token = Vue.cookie.get('token')
    // if (!token || !/\S/.test(token)) {
    //   clearLoginInfo()
    //   next({ name: 'login' })
    // }
    // next()
  }

}

const router = new Router({
  mode: 'hash',
  scrollBehavior: () => ({
    y: 0
  }),
  isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由
  routes: globalRoutes.concat(mainRoutes)
})

// 动态路由
var dynamicRouteList = []
// 动态菜单菜单
var allMenuList = [{
    'menuId': 1,
    'parentId': 0,
    'parentName': null,
    'name': '操作员管理',
    'pname': '操作',
    'url': null,
    'perms': 'account_manage',
    'type': null,
    'icon': 'system',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 2,
        'parentId': 1,
        'parentName': null,
        'name': '操作员列表',
        'url': 'smm/user',
        'perms': 'account_view',
        'type': null,
        'icon': 'admin',
        'orderNum': 1,
        'open': null,
        'list': null
      },
      {
        'menuId': 3,
        'parentId': 1,
        'parentName': null,
        'name': '角色权限',
        'url': 'smm/role',
        'perms': 'role_manage',
        'type': null,
        'icon': 'role',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 4,
        'parentId': 1,
        'parentName': null,
        'name': '密码修改',
        'url': 'smm/password-modify',
        'perms': 'login',
        'type': null,
        'icon': 'password',
        'orderNum': 1,
        'open': null,
        'list': null
      }
    ]
  },
  {
    'menuId': 20,
    'parentId': 0,
    'parentName': null,
    'name': '代理商管理',
    'pname': '代理',
    'url': null,
    'perms': null,
    'type': 'system',
    'icon': 'daili',
    'orderNum': 0,
    'open': null,
    'list': [{
      'menuId': 21,
      'parentId': 20,
      'parentName': null,
      'name': '代理商列表',
      'url': 'unit-manage/unit',
      'perms': 'login',
      'type': null,
      'icon': 'liebiao',
      'open': null,
      'list': null
    }]
  },
  {
    'menuId': 30,
    'parentId': 0,
    'parentName': null,
    'name': '异常卡分析',
    'pname': '分析',
    'url': null,
    'perms': 'card_exception_manage',
    'type': 'system',
    'icon': 'card-info',
    'orderNum': 0,
    'open': null,
    'list': [{
      'menuId': 31,
      'parentId': 30,
      'parentName': null,
      'name': '异常卡配置',
      'url': 'unit-manage/card-analysis',
      'perms': 'card_exception_setting',
      'type': null,
      'icon': 'liebiao',
      'open': null,
      'list': null
    }]
  },
  {
    'menuId': 40,
    'parentId': 0,
    'parentName': null,
    'name': '学校管理',
    'pname': '单位',
    'url': null,
    'perms': 'login',
    'type': 'agent',
    'icon': 'school',
    'orderNum': 0,
    'open': null,
    'list': [{
      'menuId': 41,
      'parentId': 40,
      'parentName': null,
      'name': '学校列表',
      'url': 'unit-manage/unit',
      'perms': 'login',
      'type': null,
      'icon': 'school',
      'open': null,
      'list': null
    }]
  },
  {
    'menuId': 60,
    'parentId': 0,
    'parentName': null,
    'name': '学校设置',
    'pname': '单位',
    'url': null,
    'perms': 'unit_manage',
    'type': 'school',
    'icon': 'school',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 61,
        'parentId': 60,
        'parentName': null,
        'name': '学校信息',
        'url': 'unit-manage/unit-information',
        'perms': 'unit_view',
        'type': null,
        'icon': 'school-info',
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 62,
      //   'parentId': 60,
      //   'parentName': null,
      //   'name': '学校参数',
      //   'url': 'unit-manage/unit-parameter',
      //   'perms': 'unit_setting',
      //   'type': null,
      //   'icon': 'canshu',
      //   'open': null,
      //   'list': null
      // },
      {
        'menuId': 63,
        'parentId': 60,
        'parentName': null,
        'name': '学校支付参数',
        'url': 'unit-manage/unit-payment',
        'perms': 'unit_pay_config',
        'type': null,
        'icon': 'peizhi',
        'open': null,
        'list': null
      },
      {
        'menuId': 64,
        'parentId': 60,
        'parentName': null,
        'name': '卡密钥配置',
        'url': 'unit-manage/card-Key-configuration',
        'perms': 'unit_key_config',
        'type': null,
        'icon': 'peizhi',
        'open': null,
        'list': null
      },
      {
        'menuId': 65,
        'parentId': 60,
        'parentName': null,
        'name': '钱包配置',
        'url': 'unit-manage/wallet-configuration',
        'perms': 'unit_pay_config',
        'type': null,
        'icon': 'peizhi',
        'open': null,
        'list': null
      },
      {
        'menuId': 66,
        'parentId': 60,
        'parentName': null,
        'name': '手机端权限配置',
        'url': 'unit-manage/h5-student-setting',
        'perms': 'user_update_config',
        'type': null,
        'icon': 'peizhi',
        'open': null,
        'list': null
      },
      {
        'menuId': 123,
        'parentId': 120,
        'parentName': null,
        'name': '单位分账记录',
        'url': 'recharge-management/ledger-record',
        'perms': 'recharge_view',
        'type': null,
        'icon': 'jilu',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 141,
        'parentId': 140,
        'parentName': null,
        'name': '中间件状态查询',
        'url': 'middleware/middleware-state',
        'perms': 'middleware_view',
        'type': null,
        'icon': 'log',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 142,
        'parentId': 140,
        'parentName': null,
        'name': '中间件修改保存',
        'url': 'middleware/middleware-modify-save',
        'perms': 'middleware_edit',
        'type': null,
        'icon': 'log',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 51,
        'parentId': 50,
        'parentName': null,
        'name': '对接配置',
        'url': 'unit-manage/docking-configuration',
        'perms': 'third_sync',
        'type': null,
        'icon': 'peizhi',
        'open': null,
        'list': null
      },
    ]
  },
  {
    'menuId': 80,
    'parentId': 0,
    'parentName': null,
    'name': '人事资料',
    'pname': '人事',
    'url': null,
    'perms': 'dept_manage',
    'type': 'school',
    'icon': 'bumen',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 81,
        'parentId': 80,
        'parentName': null,
        'name': '部门管理',
        'url': 'department/department-info',
        'perms': 'dept_view',
        'type': null,
        'icon': 'bumen',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 82,
        'parentId': 80,
        'parentName': null,
        'name': '身份/分组管理',
        'url': 'department/group-info',
        'perms': 'group_manage',
        'type': null,
        'icon': 'group',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 83,
        'parentId': 80,
        'parentName': null,
        'name': '人员管理',
        'url': 'department/user-info',
        'perms': 'user_manage',
        'type': null,
        'icon': 'renka',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 86,
        'parentId': 80,
        'parentName': null,
        'name': '人员批量修改',
        'url': 'department/edit-user-info',
        'perms': 'user_manage',
        'type': null,
        'icon': 'renka',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 84,
      //   'parentId': 80,
      //   'parentName': null,
      //   'name': '账号绑定',
      //   'url': 'department/account-binding',
      //   'perms': 'user_binding_view',
      //   'type': null,
      //   'icon': 'bangding',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },
      // {
      //   'menuId': 85,
      //   'parentId': 80,
      //   'parentName': null,
      //   'name': '账号批量绑定',
      //   'url': 'department/account-binding-all',
      //   'perms': 'user_binding_view',
      //   'type': null,
      //   'icon': 'bangding',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // }
    ]
  },
  {
    'menuId': 310,
    'parentId': 1,
    'parentName': null,
    'name': '卡业务中心',
    'pname': '卡务',
    'url': null,
    'perms': 'card_manage',
    'type': 'school',
    'icon': 'card',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 311,
        'parentId': 310,
        'parentName': null,
        'name': '卡务明细表',
        'url': 'consumption/card-business-details',
        'perms': 'card_view',
        'type': null,
        'icon': 'card-info',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 330,
      //   'parentId': 300,
      //   'parentName': null,
      //   'name': '卡务汇总表',
      //   'url': 'consumption/summary-of-consumption',
      //   'perms': 'summary_view',
      //   'type': null,
      //   'icon': 'huizong',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },
      {
        'menuId': 331,
        'parentId': 300,
        'parentName': null,
        'name': '卡务汇总表',
        'url': 'consumption/summary-of-consumption-old',
        'perms': 'summary_view',
        'type': null,
        'icon': 'huizong',
        'orderNum': 7,
        'open': null,
        'list': null
      },

      {
        'menuId': 313,
        'parentId': 300,
        'parentName': null,
        'name': '人卡绑定',
        'url': 'card-business-management/person-card-binding',
        'perms': 'card_bind',
        'type': null,
        'icon': 'renkabangding',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 316,
        'parentId': 300,
        'parentName': null,
        'name': '卡挂失与解挂',
        'url': 'card-business-management/card-loss-reporting',
        // 'perms': 'card_loss',
        'perms': 'card_manage',
        'type': null,
        'icon': 'guashi',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 333,
        'parentId': 300,
        'parentName': null,
        'name': '无卡消费修正',
        'url': 'card-business-management/consumption-correction',
        'perms': 'card_consume_revise',
        'type': null,
        'icon': 'xiuzheng',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 120,
        'parentId': 0,
        'parentName': null,
        'name': '无卡充值管理',
        'url': null,
        'perms': 'recharge_manage',
        'type': 'school',
        'icon': 'chongzhi',
        'orderNum': 0,
        'open': null,
        'list': [{
            'menuId': 320,
            'parentId': 120,
            'parentName': null,
            'name': '无卡充值类型',
            'url': 'card-business-management/recharge-without-card-type',
            'perms': 'card_recharge',
            'type': null,
            'icon': 'lable',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 314,
            'parentId': 120,
            'parentName': null,
            'name': '无卡现金充值',
            'url': 'card-business-management/recharge-without-card',
            'perms': 'card_recharge',
            'type': null,
            'icon': 'chongzhi',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 121,
            'parentId': 120,
            'parentName': null,
            'name': '无卡充值到账查询',
            'url': 'recharge-management/user-recharge-query',
            'perms': 'recharge_view',
            'type': null,
            'icon': 'log',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 317,
            'parentId': 120,
            'parentName': null,
            'name': '无卡充值统计',
            'url': 'card-business-management/recharge-without-card-statistics',
            'perms': 'card_recharge',
            'type': null,
            'icon': 'tongji',
            'orderNum': 7,
            'open': null,
            'list': null
          },

        ]
      },
      {
        'menuId': 131,
        'parentId': 0,
        'parentName': null,
        'name': '无卡减款管理',
        'url': null,
        'perms': 'rebates_manage',
        'type': 'school',
        'icon': 'xiaofeiA',
        'orderNum': 0,
        'open': null,
        'list': [{
            'menuId': 319,
            'parentId': 131,
            'parentName': null,
            'name': '无卡减款类型',
            'url': 'card-business-management/card-free-consumption-type',
            'perms': 'card_rebates',
            'type': null,
            'icon': 'lable',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 315,
            'parentId': 131,
            'parentName': null,
            'name': '无卡减款',
            'url': 'card-business-management/card-free-consumption',
            'perms': 'card_rebates',
            'type': null,
            'icon': 'xiaofeiA',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 124,
            'parentId': 131,
            'parentName': null,
            'name': '无卡减款情况查询',
            'url': 'recharge-management/deduction-record',
            'perms': 'rebates_view',
            'type': null,
            'icon': 'xiaofeiA',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 318,
            'parentId': 120,
            'parentName': null,
            'name': '无卡减款统计',
            'url': 'card-business-management/card-free-consumption-statistics',
            'perms': 'card_rebates',
            'type': null,
            'icon': 'tongji',
            'orderNum': 7,
            'open': null,
            'list': null
          },
        ]
      },
      {
        'menuId': 341,
        'parentId': 300,
        'parentName': null,
        'name': '卡余额报表',
        'url': null,
        'perms': 'card_balance_manage',
        'type': null,
        'icon': 'yuer',
        'orderNum': 7,
        'open': null,
        'list': [{
            'menuId': 361,
            'parentId': 341,
            'parentName': null,
            'name': '单位余额查询',
            'url': 'card-business-management/balance-management/shcool',
            'perms': 'card_balance_unit',
            'type': null,
            'icon': 'renka',
            'orderNum': 7,
            'open': null,
            'list': null
          }, {
            'menuId': 362,
            'parentId': 341,
            'parentName': null,
            'name': '部门余额查询',
            'url': 'card-business-management/balance-management/department',
            'perms': 'card_balance_department',
            'type': null,
            'icon': 'bumen',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 363,
            'parentId': 341,
            'parentName': null,
            'name': '个人余额查询',
            'url': 'card-business-management/balance-management/personal',
            'perms': 'card_balance_user',
            'type': null,
            'icon': 'renka',
            'orderNum': 7,
            'open': null,
            'list': null
          },
        ]
      },
      {
        'menuId': 180,
        'parentId': 0,
        'parentName': null,
        'name': '异常信息',
        'url': null,
        'perms': 'exception_manage',
        'type': 'school',
        'icon': 'tubiao',
        'orderNum': 0,
        'open': null,
        'list': [{
          'menuId': 181,
          'parentId': 0,
          'parentName': null,
          'name': '异常卡',
          'url': 'abnormal-card-table/abnormal-card-table',
          'perms': 'exception_manage',
          'type': 'school',
          'icon': 'tubiao',
          'orderNum': 0,
          'open': null,
        }]
      },

    ]

  },
  {
    'menuId': 350,
    'parentId': 1,
    'parentName': null,
    'name': '缴费管理',
    'pname': '缴费',
    'url': null,
    'perms': 'user_payment_config',
    'type': 'school',
    'icon': 'card',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 351,
        'parentId': 350,
        'parentName': null,
        'name': '缴费项目',
        'url': 'payment/pay-items',
        'perms': 'user_payment_view',
        'type': null,
        'icon': 'jiaofei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 352,
      //   'parentId': 350,
      //   'parentName': null,
      //   'name': '缴费',
      //   'url': 'payment/pay',
      //   'perms': 'dept_view',
      //   'type': null,
      //   'icon': 'jiaofei',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // }
    ]
  },
  {
    'menuId': 600,
    'parentId': 0,
    'parentName': null,
    'name': '就餐补扣',
    'pname': '补扣',
    'url': null,
    'perms': 'area_building',
    'type': 'school',
    'icon': 'bukou',
    'orderNum': 0,
    'open': null,
    'list': [{
      'menuId': 601,
      'parentId': 600,
      'parentName': null,
      'name': '就餐补扣统计',
      'url': 'meal-allowance/details',
      'perms': 'area_building_view',
      'type': null,
      'icon': 'info',
      'orderNum': 7,
      'open': null,
      'list': null
    },{
      'menuId': 602,
      'parentId': 600,
      'parentName': null,
      'name': '用户缺餐情况',
      'url': 'meal-allowance/food-shortage',
      'perms': 'area_building_view',
      'type': null,
      'icon': 'user',
      'orderNum': 7,
      'open': null,
      'list': null
    }, 
  
  ]
  },

  {
    'menuId': 100,
    'parentId': 0,
    'parentName': null,
    'name': '区域楼栋',
    'pname': '区域',
    'url': null,
    'perms': 'area_building',
    'type': 'school',
    'icon': 'loudong',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 101,
        'parentId': 100,
        'parentName': null,
        'name': '区域楼栋信息',
        'url': 'area-building/area-building-info',
        'perms': 'area_building_view',
        'type': null,
        'icon': 'info',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 102,
        'parentId': 100,
        'parentName': null,
        'name': '房间与人员的绑定',
        'url': 'area-building-room-personnel/room-personnel',
        'perms': 'room_person_edit',
        'type': null,
        'icon': 'user',
        'orderNum': 7,
        'open': null,
        'list': null
      }
    ]
  },
  {
    'menuId': 290,
    'parentId': 1,
    'parentName': null,
    'name': '自助发卡',
    'pname': '自助',
    'url': null,
    'perms': 'card_mach_manage',
    'type': 'school',
    'icon': 'oncard',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 291,
        'parentId': 290,
        'parentName': null,
        'name': '发卡设备管理',
        'url': 'send-cards/device-management',
        'perms': 'card_mach_view',
        'type': null,
        'icon': 'shebei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 294,
        'parentId': 290,
        'parentName': null,
        'name': '自助发卡配置',
        'url': 'send-cards/dispose',
        'perms': 'card_mach_config',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 293,
        'parentId': 290,
        'parentName': null,
        'name': '发卡参数规则',
        'url': 'send-cards/parameters',
        'perms': 'card_p_view',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 292,
        'parentId': 290,
        'parentName': null,
        'name': '自助发卡记录',
        'url': 'send-cards/card-issuing-record',
        'perms': 'self_issuing_view',
        'type': null,
        'icon': 'log',
        'orderNum': 7,
        'open': null,
        'list': null
      },

    ]
  },
  {
    'menuId': 301,
    'parentId': 300,
    'parentName': null,
    'name': '消费',
    'pname': '消费',
    'url': null,
    'perms': 'consume_manage',
    'type': "school",
    'icon': 'xiaofei',
    'orderNum': 7,
    'open': null,
    'list': [{
        'menuId': 302,
        'parentId': 301,
        'parentName': null,
        'name': '消费机管理',
        'url': 'consumption/consumption-device-management',
        'perms': 'consume_view',
        'type': null,
        'icon': 'shebei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 309,
        'parentId': 300,
        'parentName': null,
        'name': '消费规则',
        'url': 'consumption/consumer-machine-parameters-new',
        'perms': 'consume_p_view',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 304,
        'parentId': 300,
        'parentName': null,
        'name': '消费黑白名单',
        'url': 'consumption/black-white-list',
        'perms': 'consume_name_view',
        'type': null,
        'icon': 'hei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 305,
        'parentId': 300,
        'parentName': null,
        'name': '餐别设置',
        'url': 'consumption/meal-management',
        'perms': 'meal_view',
        'type': null,
        'icon': 'canbie',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 303,
        'parentId': 300,
        'parentName': null,
        'name': '账期设置',
        'url': 'consumption/account-period-setting',
        'perms': 'payment_day_view',
        'type': null,
        'icon': 'system',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 360,
        'parentId': 300,
        'parentName': null,
        'name': '结算单位',
        'url': 'consumption/settlement-unit',
        'perms': 'merchant_view',
        'type': null,
        'icon': 'danwei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 307,
        'parentId': 300,
        'parentName': null,
        'name': '刷卡明细',
        'url': 'consumption/swipe-details',
        'perms': 'detail_view',
        'type': null,
        'icon': 'card-info',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 306,
        'parentId': 300,
        'parentName': null,
        'name': '部门消费统计',
        'url': 'consumption/department-consumption',
        'perms': 'dept_statistics_view',
        'type': null,
        'icon': 'bumen',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 308,
        'parentId': 300,
        'parentName': null,
        'name': '个人消费统计',
        'url': 'consumption/personal-consumption-smmary',
        'perms': 'person_statistics_view',
        'type': null,
        'icon': 'renka',
        'orderNum': 7,
        'open': null,
        'list': null
      },

      {
        'menuId': 312,
        'parentId': 300,
        'parentName': null,
        'name': '营业收入统计',
        'url': 'consumption/operating-income-statistics',
        'perms': 'income_view',
        'type': null,
        'icon': 'yinshou',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 322,
      //   'parentId': 300,
      //   'parentName': null,
      //   'name': '平衡账',
      //   'url': 'consumption/balance-account',
      //   'perms': 'bilanz_view',
      //   'type': null,
      //   'icon': 'pingheng',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },

      // {
      //   'menuId': 340,
      //   'parentId': 300,
      //   'parentName': null,
      //   'name': '消费结算',
      //   'url': 'consumption/consumption-and-settlement',
      //   'perms': 'settle_view',
      //   'type': null,
      //   'icon': 'jiesuan',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },
      // {
      //   'menuId': 350,
      //   'parentId': 300,
      //   'parentName': null,
      //   'name': '测试',
      //   'url': 'consumption/test',
      //   'perms': 'login',
      //   'type': null,
      //   'icon': 'log',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },

    ]
  },
  {
    'menuId': 720,
    'parentId': 1,
    'parentName': null,
    'name': '水控',
    'pname': '水控',
    'url': null,
    'perms': 'water_manage',
    'type': 'school',
    'icon': 'shuikong',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 730,
        'parentId': 720,
        'parentName': null,
        'name': '水控设备管理',
        'url': 'water-control/water-control-management',
        'perms': 'water_view',
        'type': null,
        'icon': 'shebei',
        'open': null,
        'list': null
      },
      {
        'menuId': 780,
        'parentId': 720,
        'parentName': null,
        'name': '水控参数规则',
        'url': 'water-control/water-control-parameters',
        'perms': 'water_p_view',
        'type': null,
        'icon': 'guize',
        'open': null,
        'list': null
      },
      {
        'menuId': 790,
        'parentId': 720,
        'parentName': null,
        'name': '水控黑白名单',
        'url': 'water-control/black-white-list',
        'perms': 'water_name_view',
        'type': null,
        'icon': 'hei',
        'open': null,
        'list': null
      },
      {
        'menuId': 741,
        'parentId': 720,
        'parentName': null,
        'name': '楼栋用水查询',
        'url': 'water-control/build-water',
        'perms': 'building_water_view',
        'type': null,
        'icon': 'loudong',
        'open': null,
        'list': null
      },
      {
        'menuId': 740,
        'parentId': 720,
        'parentName': null,
        'name': '房间用水查询',
        'url': 'water-control/regional-water',
        'perms': 'room_water_view',
        'type': null,
        // 'icon': 'loudong',
        'icon': 'fangjian',
        'open': null,
        'list': null
      },

      {
        'menuId': 750,
        'parentId': 720,
        'parentName': null,
        'name': '个人用水',
        'url': 'water-control/Individual-water',
        'perms': 'person_water_view',
        'type': null,
        'icon': 'renka',
        'open': null,
        'list': null
      },
      {
        'menuId': 760,
        'parentId': 720,
        'parentName': null,
        'name': '部门用水',
        'url': 'water-control/department-of-water',
        'perms': 'dept_water_view',
        'type': null,
        'icon': 'bumen',
        'open': null,
        'list': null
      },
      {
        'menuId': 770,
        'parentId': 720,
        'parentName': null,
        'name': '身份/分组用水',
        'url': 'water-control/grouping-water',
        'perms': 'group_water_view',
        'type': null,
        'icon': 'group',
        'open': null,
        'list': null
      },

    ]
  },
  {
    'menuId': 3100,
    'parentId': 1,
    'parentName': null,
    'name': '电控',
    'pname': '电控',
    'url': null,
    'perms': 'ec_manage',
    'type': 'school',
    'icon': 'diankong',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 3101,
        'parentId': 3100,
        'parentName': null,
        'name': '电控设备管理',
        'url': 'electronic-control/device-management',
        'perms': 'ec_view',
        'type': null,
        'icon': 'shebei',
        'open': null,
        'list': null
      },
      {
        'menuId': 3102,
        'parentId': 3100,
        'parentName': null,
        'name': '电控充值记录',
        'url': 'electronic-control/recharge-record',
        'perms': 'ec_recharge_view',
        'type': null,
        'icon': 'chongzhi',
        'open': null,
        'list': null
      },
      {
        'menuId': 3103,
        'parentId': 3100,
        'parentName': null,
        'name': '区域统计',
        'url': 'electronic-control/region',
        'perms': 'ec_view',
        'type': null,
        'icon': 'loudong',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 3104,
      //   'parentId': 3100,
      //   'parentName': null,
      //   'name': '每月用电统计',
      //   'url': 'electronic-control/region-month',
      //   'perms': 'ec_view',
      //   'type': null,
      //   'icon': 'log',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },
    ]
  },
  {
    'menuId': 220,
    'parentId': 1,
    'parentName': null,
    'name': '门锁',
    'pname': '门锁',
    'url': null,
    'perms': 'lock_manage',
    'type': 'school',
    'icon': 'door',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 221,
        'parentId': 200,
        'parentName': null,
        'name': '门锁设备管理',
        'url': 'door-lock/doorlock-device-management',
        'perms': 'lock_view',
        'type': null,
        'icon': 'shebei',
        'open': null,
        'list': null
      },
      {
        'menuId': 228,
        'parentId': 200,
        'parentName': null,
        'name': '出入规则',
        'url': 'door-lock/parameter-template',
        'perms': 'lock_p_view',
        'type': null,
        'icon': 'guize',
        'open': null,
        'list': null
      },
      {
        'menuId': 222,
        'parentId': 200,
        'parentName': null,
        'name': '区域通行记录',
        'url': 'door-lock/door-lock-area-access-record',
        'perms': 'area_lock_view',
        'type': null,
        'icon': 'loudong',
        'open': null,
        'list': null
      },
      {
        'menuId': 223,
        'parentId': 200,
        'parentName': null,
        'name': '部门通行记录',
        'url': 'door-lock/door-lock-department-access-record',
        'perms': 'dept_lock_view',
        'type': null,
        'icon': 'bumen',
        'open': null,
        'list': null
      },
      {
        'menuId': 224,
        'parentId': 200,
        'parentName': null,
        'name': '授权信息',
        'url': 'door-lock/door-lock-license-info',
        'perms': 'auth_view',
        'type': null,
        'icon': 'shouquan',
        'open': null,
        'list': null
      },
      {
        'menuId': 231,
        'parentId': 200,
        'parentName': null,
        'name': '时效密码管理',
        'url': 'door-lock/password-management',
        'perms': 'auth_view',
        'type': null,
        'icon': 'pass',
        'open': null,
        'list': null
      },
      {
        'menuId': 225,
        'parentId': 200,
        'parentName': null,
        'name': '入住信息',
        'url': 'door-lock/accommodation-info',
        'perms': 'room_auht_view',
        'type': null,
        'icon': 'log',
        'open': null,
        'list': null
      },
      {
        'menuId': 226,
        'parentId': 200,
        'parentName': null,
        'name': '临时授权',
        'url': 'door-lock/temporary-authorization',
        'perms': 'temp_auth',
        'type': null,
        'icon': 'lingshi',
        'open': null,
        'list': null
      },
      {
        'menuId': 227,
        'parentId': 200,
        'parentName': null,
        'name': '角色管理',
        'url': 'door-lock/lock-role-management',
        'perms': 'lock_role_view',
        'type': null,
        'icon': 'role',
        'open': null,
        'list': null
      },

      {
        'menuId': 230,
        'parentId': 200,
        'parentName': null,
        'name': '导入授权',
        'url': 'door-lock/doorlock-license-info',
        'perms': 'import_auth',
        'type': null,
        'icon': 'daoru',
        'open': null,
        'list': null
      },

    ]
  },
  {
    'menuId': 3000,
    'parentId': 0,
    'parentName': null,
    'name': '门禁',
    'pname': '门禁',
    'url': null,
    'perms': 'access_manage',
    'type': 'school',
    'icon': 'menjin',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 3001,
        'parentId': 3000,
        'parentName': null,
        'name': '门禁设备',
        'url': 'entrance-guard/device-management',
        'perms': 'access_view',
        'type': null,
        'icon': 'shebei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3002,
        'parentId': 3000,
        'parentName': null,
        'name': '四门出入规则',
        'url': 'entrance-guard/parameter-template',
        'perms': 'access_p_view',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3007,
        'parentId': 3000,
        'parentName': null,
        'name': '双门出入规则',
        'url': 'entrance-guard/two-parameter-template',
        'perms': 'access_p_view',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3003,
        'parentId': 3000,
        'parentName': null,
        'name': '通行记录',
        'url': 'entrance-guard/access-record',
        'perms': 'access_record_view',
        'type': null,
        'icon': 'log',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3004,
        'parentId': 3000,
        'parentName': null,
        'name': '角色管理',
        'url': 'entrance-guard/role-management',
        'perms': 'access_role_view',
        'type': null,
        'icon': 'role',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3005,
        'parentId': 3000,
        'parentName': null,
        'name': '门禁授权',
        'url': 'entrance-guard/access-control-authorization',
        'perms': 'access_auth_edit',
        'type': null,
        'icon': 'shouquan',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3006,
        'parentId': 3000,
        'parentName': null,
        'name': '授权信息',
        'url': 'entrance-guard/license-info',
        'perms': 'access_auth_view',
        'type': null,
        'icon': 'log',
        'orderNum': 7,
        'open': null,
        'list': null
      },

    ]
  },
  {
    'menuId': 3300,
    'parentId': 0,
    'parentName': null,
    'name': '考勤管理',
    'pname': '考勤',
    'url': null,
    'perms': 'atten_manage',
    'type': 'school',
    'icon': 'kaoqing',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 3301,
        'parentId': 0,
        'parentName': null,
        'name': '角色管理',
        'pname': '角色',
        'url': null,
        'perms': 'atten_manage',
        'type': 'school',
        'icon': 'role',
        'orderNum': 0,
        'open': null,
        'list': [{
            'menuId': 3303,
            'parentId': 3301,
            'parentName': null,
            'name': '角色人员管理',
            'url': 'attendance/role-management',
            'perms': 'atten_role_view',
            'type': null,
            'icon': 'renka',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 3304,
            'parentId': 3301,
            'parentName': null,
            'name': '角色数据来源',
            'url': 'attendance/time-slot-device-bind',
            'perms': 'atten_rule_edit',
            'type': null,
            'icon': 'shiduan',
            'orderNum': 7,
            'open': null,
            'list': null
          },
        ]
      },
      {
        'menuId': 3305,
        'parentId': 3300,
        'parentName': null,
        'name': '考勤时段',
        'url': 'attendance/period',
        'perms': 'atten_rule_view',
        'type': null,
        'icon': 'shiduan',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3306,
        'parentId': 3300,
        'parentName': null,
        'name': '角色排班',
        'url': 'attendance/scheduling',
        'perms': 'atten_plan_edit',
        'type': null,
        'icon': 'kaoqing',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3309,
        'parentId': 3300,
        'parentName': null,
        'name': '个人排班',
        'url': 'attendance/user-scheduling',
        'perms': 'atten_plan_edit',
        'type': null,
        'icon': 'kaoqing',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3307,
        'parentId': 3300,
        'parentName': null,
        'name': '部门考勤报表',
        'url': 'attendance/department',
        'perms': 'atten_record_view',
        'type': null,
        'icon': 'bumen',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3308,
        'parentId': 3300,
        'parentName': null,
        'name': '部门每日考勤报表',
        'url': 'attendance/department-day',
        'perms': 'atten_record_view',
        'type': null,
        'icon': 'bumen',
        'orderNum': 7,
        'open': null,
        'list': null
      },
    ]
  },
  {
    'menuId': 3200,
    'parentId': 0,
    'parentName': null,
    'name': '电吹风',
    'pname': '热风',
    'url': null,
    'perms': 'hairdrider_manage',
    'type': 'school',
    'icon': 'dianchuifeng',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 3201,
        'parentId': 3200,
        'parentName': null,
        'name': '电吹风管理',
        'url': 'hair-drier/device-management',
        'perms': 'hairdrider_manage',
        'type': null,
        'icon': 'shebei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3202,
        'parentId': 3200,
        'parentName': null,
        'name': '电吹风规则',
        'url': 'hair-drier/drier-control-parameters',
        'perms': 'hairdrider_p_view',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3203,
        'parentId': 3200,
        'parentName': null,
        'name': '电吹风黑白名单',
        'url': 'hair-drier/black-white-list',
        'perms': 'hd_detail_view',
        'type': null,
        'icon': 'hei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3204,
        'parentId': 3200,
        'parentName': null,
        'name': '刷卡明细',
        'url': 'hair-drier/credit-card-details',
        'perms': 'hairdrider_detail_view',
        'type': null,
        'icon': 'card-info',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3205,
        'parentId': 3200,
        'parentName': null,
        'name': '个人统计',
        'url': 'hair-drier/personal-statistics',
        'perms': 'hairdrider_user_view',
        'type': null,
        'icon': 'renka',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 3206,
        'parentId': 3200,
        'parentName': null,
        'name': '区域统计',
        'url': 'hair-drier/region',
        'perms': 'hairdrider_area_view',
        'type': null,
        'icon': 'loudong',
        'orderNum': 7,
        'open': null,
        'list': null
      },
    ]
  },
  {
    'menuId': 2000,
    'parentId': 0,
    'parentName': null,
    'name': '公话',
    'pname': '公话',
    'url': null,
    'perms': 'phone_manage',
    'type': 'school',
    'icon': 'phone',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 2001,
        'parentId': 2000,
        'parentName': null,
        'name': '话机设备',
        'url': 'public-phone/device-management',
        'perms': 'phone_view',
        'type': null,
        'icon': 'shebei',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 2002,
        'parentId': 2000,
        'parentName': null,
        'name': '学校费率设置',
        'url': 'public-phone/school-rate-setting',
        'perms': 'package_view',
        'type': null,
        'icon': 'guize',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      // {
      //   'menuId': 2002,
      //   'parentId': 2000,
      //   'parentName': null,
      //   'name': '话机列表',
      //   'url': 'public-phone/phone-list',
      //   'perms': 'login',
      //   'type': null,
      //   'icon': 'log',
      //   'orderNum': 7,
      //   'open': null,
      //   'list': null
      // },
      {
        'menuId': 2003,
        'parentId': 2000,
        'parentName': null,
        'name': '学生套餐管理',
        'url': null,
        'perms': null,
        'type': null,
        'icon': 'taocan',
        'orderNum': 7,
        'open': null,
        'list': [{
            'menuId': 2101,
            'parentId': 2003,
            'parentName': null,
            'name': '学生套餐',
            'url': 'public-phone/student-package-management/student-package',
            'perms': 'user_package_view',
            'type': null,
            'icon': 'taocan',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2102,
            'parentId': 2003,
            'parentName': null,
            'name': '学生套餐批量订购',
            'url': 'public-phone/student-package-management/student-bulk-order',
            'perms': 'user_package_import',
            'type': null,
            'icon': 'dinggou',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2103,
            'parentId': 2003,
            'parentName': null,
            'name': '学生亲情号',
            'url': 'public-phone/student-package-management/student-love-number',
            'perms': 'family_view',
            'type': null,
            'icon': 'qingqing',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2104,
            'parentId': 2003,
            'parentName': null,
            'name': '学生亲情号导入',
            'url': 'public-phone/student-package-management/student-love-number-batch',
            'perms': 'family_import',
            'type': null,
            'icon': 'daoru',
            'orderNum': 7,
            'open': null,
            'list': null
          }
        ]
      },
      {
        'menuId': 2004,
        'parentId': 2000,
        'parentName': null,
        'name': '充值管理',
        'url': null,
        'perms': 'login',
        'type': null,
        'icon': 'chongzhi',
        'orderNum': 7,
        'open': null,
        'list': [{
            'menuId': 2201,
            'parentId': 2004,
            'parentName': null,
            'name': '学生卡充值',
            'url': 'public-phone/deposit-management/student-card-recharge',
            'perms': 'phone_recharge',
            'type': null,
            'icon': 'chongzhi',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2202,
            'parentId': 2004,
            'parentName': null,
            'name': '学生卡批量充值',
            'url': 'public-phone/deposit-management/student-card-batch-recharge',
            'perms': 'phone_recharge',
            'type': null,
            'icon': 'piliangchongzhi',
            'orderNum': 7,
            'open': null,
            'list': null
          }
        ]
      },
      {
        'menuId': 2005,
        'parentId': 2000,
        'parentName': null,
        'name': '综合查询',
        'url': null,
        'perms': null,
        'type': null,
        'icon': 'seach',
        'orderNum': 7,
        'open': null,
        'list': [{
            'menuId': 2301,
            'parentId': 2005,
            'parentName': null,
            'name': '学生充值查询',
            'url': 'public-phone/Integrated-query/student-recharge-inquiry',
            'perms': 'phone_recharge_view',
            'type': null,
            'icon': 'seach',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          // {
          //   'menuId': 2302,
          //   'parentId': 2005,
          //   'parentName': null,
          //   'name': '代理商充值查询',
          //   'url': 'public-phone/Integrated-query/agent-recharge-inquiry',
          //   'perms': 'login',
          //   'type': null,
          //   'icon': 'log',
          //   'orderNum': 7,
          //   'open': null,
          //   'list': null
          // },
          {
            'menuId': 2304,
            'parentId': 2005,
            'parentName': null,
            'name': '话单记录',
            'url': 'public-phone/Integrated-query/query-of-consumption-records',
            'perms': 'phone_bill_view',
            'type': null,
            'icon': 'log',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2305,
            'parentId': 2005,
            'parentName': null,
            'name': '刷卡查询',
            'url': 'public-phone/Integrated-query/credit-card-inquiry',
            'perms': 'phone_authen',
            'type': null,
            'icon': 'shuaka',
            'orderNum': 7,
            'open': null,
            'list': null
          },

        ]
      },
      {
        'menuId': 2006,
        'parentId': 2000,
        'parentName': null,
        'name': '统计报表',
        'url': null,
        'perms': null,
        'type': null,
        'icon': 'baobiao',
        'orderNum': 7,
        'open': null,
        'list': [{
            'menuId': 2401,
            'parentId': 2006,
            'parentName': null,
            'name': '消费统计报表',
            'url': 'public-phone/statistical-report/consumption-statistics-report',
            'perms': 'phone_bill_report',
            'type': null,
            'icon': 'xiaofei',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2402,
            'parentId': 2006,
            'parentName': null,
            'name': '充值统计报表',
            'url': 'public-phone/statistical-report/recharge-statistics-report',
            'perms': 'phone_recharge_bill',
            'type': null,
            'icon': 'chongzhi',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2403,
            'parentId': 2006,
            'parentName': null,
            'name': '班级消费统计',
            'url': 'public-phone/statistical-report/class-consumption-statistics',
            'perms': 'phone_bill_report',
            'type': null,
            'icon': 'banji',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2404,
            'parentId': 2006,
            'parentName': null,
            'name': '班级充值统计',
            'url': 'public-phone/statistical-report/class-recharge-statistics',
            'perms': 'phone_recharge_bill',
            'type': null,
            'icon': 'banji',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2405,
            'parentId': 2006,
            'parentName': null,
            'name': '终端明细',
            'url': 'public-phone/statistical-report/terminal-details',
            'perms': 'phone_bill_report',
            'type': null,
            'icon': 'card-info',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2406,
            'parentId': 2006,
            'parentName': null,
            'name': '终端汇总日表',
            'url': 'public-phone/statistical-report/terminal-summary-table',
            'perms': 'phone_bill_report',
            'type': null,
            'icon': 'rvbao',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2407,
            'parentId': 2006,
            'parentName': null,
            'name': '终端汇总月表',
            'url': 'public-phone/statistical-report/terminal-summary-monthly-table',
            'perms': 'phone_bill_report',
            'type': null,
            'icon': 'yuebao',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2108,
            'parentId': 2006,
            'parentName': null,
            'name': '充值明细表',
            'url': 'public-phone/statistical-report/recharge-schedule',
            'perms': 'phone_recharge_bill',
            'type': null,
            'icon': 'card-info',
            'orderNum': 7,
            'open': null,
            'list': null
          },
          {
            'menuId': 2409,
            'parentId': 2006,
            'parentName': null,
            'name': '充值汇总表',
            'url': 'public-phone/statistical-report/recharge-summary-table',
            'perms': 'phone_recharge_bill',
            'type': null,
            'icon': 'huizong',
            'orderNum': 7,
            'open': null,
            'list': null
          }
        ]
      },
    ]
  },

  // {
  //   'menuId': 140,
  //   'parentId': 0,
  //   'parentName': null,
  //   'name': '中间件',
  //   'url': null,
  //   'perms': 'middleware_manage',
  //   'type': 'school',
  //   'icon': 'log',
  //   'orderNum': 0,
  //   'open': null,
  //   'list': [{
  //     'menuId': 141,
  //     'parentId': 140,
  //     'parentName': null,
  //     'name': '中间件状态查询',
  //     'url': 'middleware/middleware-state',
  //     'perms': 'middleware_view',
  //     'type': null,
  //     'icon': 'log',
  //     'orderNum': 7,
  //     'open': null,
  //     'list': null
  //   },
  //   {
  //     'menuId': 142,
  //     'parentId': 140,
  //     'parentName': null,
  //     'name': '中间件修改保存',
  //     'url': 'middleware/middleware-modify-save',
  //     'perms': 'middleware_edit',
  //     'type': null,
  //     'icon': 'log',
  //     'orderNum': 7,
  //     'open': null,
  //     'list': null
  //   },
  //   ]
  // },
  {
    'menuId': 200,
    'parentId': 0,
    'parentName': null,
    'name': '系统日志',
    'pname': '日志',
    'url': null,
    'perms': 'log_manage',
    'type': 'system',
    'icon': 'log',
    'orderNum': 0,
    'open': null,
    'list': [{
      'menuId': 201,
      'parentId': 200,
      'parentName': null,
      'name': '系统日志',
      'url': 'log/log',
      'perms': 'log_view',
      'type': null,
      'icon': 'log',
      'orderNum': 7,
      'open': null,
      'list': null
    }]
  },
  {
    'menuId': 2271,
    'parentId': null,
    'parentName': null,
    'name': '角色添加',
    'url': 'door-lock/role-add-modify',
    'perms': 'lock_role_edit',
    'type': null,
    'icon': 'log',
    'open': null,
    'list': null
  },
  {
    'menuId': 2272,
    'parentId': null,
    'parentName': null,
    'name': '角色修改',
    'url': 'door-lock/role-modification',
    'perms': 'lock_role_edit',
    'type': null,
    'icon': 'log',
    'open': null,
    'list': null
  },
  {
    'menuId': 500,
    'parentId': null,
    'parentName': null,
    'name': '售后',
    'pname': '售后',
    'url': null,
    'perms': 'aftersales_manage',
    'type': 'school',
    'icon': 'shouhou',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 501,
        'parentId': null,
        'parentName': null,
        'name': '用户信息查询',
        'url': 'after-sales/user-information-query',
        'perms': 'search_user',
        'type': null,
        'icon': 'log',
        'open': null,
        'list': null
      },
      {
        'menuId': 122,
        'parentId': 120,
        'parentName': null,
        'name': '充值对账查询',
        'url': 'recharge-management/recharge-reconciliation',
        'perms': 'recharge_adjust',
        'type': null,
        'icon': 'duizhang',
        'orderNum': 7,
        'open': null,
        'list': null
      },
      {
        'menuId': 125,
        'parentId': 120,
        'parentName': null,
        'name': '名单序号分析统计',
        'url': 'after-sales/list-number-analysis',
        'perms': 'unit_name_serial',
        'type': null,
        'icon': 'log',
        'orderNum': 7,
        'open': null,
        'list': null
      },
    ]
  },
  {
    'menuId': 4000,
    'parentId': 0,
    'parentName': null,
    'name': '公话',
    'pname': '公话',
    'url': null,
    'perms': null,
    'type': 'agent',
    'icon': 'phone',
    'orderNum': 0,
    'open': null,
    'list': [{
        'menuId': 4002,
        'parentId': 4000,
        'parentName': null,
        'name': '公话池配置',
        'url': 'public-phone/public-telephone-configuration',
        'perms': 'login',
        'type': null,
        'icon': 'peizhi',
        'open': null,
        'list': null
      },
      {
        'menuId': 4001,
        'parentId': 4000,
        'parentName': null,
        'name': '充值减款',
        'url': 'public-phone/deposit-management',
        'perms': 'login',
        'type': null,
        'icon': 'pay',
        'open': null,
        'list': null
      }
    ]
  },
  // {
  //   'menuId': 50,
  //   'parentId': 0,
  //   'parentName': null,
  //   'name': '第三方配置',
  //   'url': null,
  //   'perms': 'third_sync',
  //   'type': 'school',
  //   'icon': 'disanfang',
  //   'orderNum': 0,
  //   'open': null,
  //   'list': [{
  //     'menuId': 51,
  //     'parentId': 50,
  //     'parentName': null,
  //     'name': '对接配置',
  //     'url': 'unit-manage/docking-configuration',
  //     'perms': 'third_sync',
  //     'type': null,
  //     'icon': 'peizhi',
  //     'open': null,
  //     'list': null
  //   },]
  // },

]

var userPermissionList = null
router.beforeEach(async (to, from, next) => {
  try {

  } catch (err) {
    console.log(err)
  }
  // 添加动态(菜单)路由
  // 1. 已经添加 or 全局路由, 直接访问
  // 2. 获取菜单列表, 添加并保存本地存储
  console.log('路由' + router.options.isAddDynamicMenuRoutes)
  if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
    next()
  } else {
    // 退出登录后重新获取权限
    if (from.name == 'login') {
      userPermissionList = null;
    }
    var unitType = sessionStorage.getItem('unitType')
    if (unitType == 100) {
      router.options.currentMenuList = JSON.parse(JSON.stringify(allMenuList));
      var unitGuid = sessionStorage.getItem('unitGuid')
      var userGuid = sessionStorage.getItem('administrator')
      // 获取需要删除的数组
      let res = await getIsManagement(unitGuid, userGuid);
      // res = {};
      if (!res.messageContent) {
        sessionStorage.setItem('dynamicMenuRoutes', '[]')
        sessionStorage.setItem('menuList', '[]')
        sessionStorage.setItem('permissions', '[]')
        alert('服务异常，请重试!')
      } else {
        let objContent = res.messageContent;
        console.log(objContent)
        // 是否有发卡机权限
        if (objContent.cardIssuingUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'card_mach_manage'), 1)
        }
        // 是否有水控权限
        if (objContent.waterUse != 1) {
          console.log(objContent.waterUse)
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'water_manage'), 1)
        }
        // 是否有消费权限
        if (objContent.consumeUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'consume_manage'), 1)
        }
        // 是否有电控权限
        if (objContent.electricUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'ec_manage'), 1)
        }
        // 是否有门锁权限
        if (objContent.empowerUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'lock_manage'), 1)
        }
        // 是否有门禁权限
        if (objContent.entranceUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'access_manage'), 1)
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'atten_manage'), 1)
        }

        // 是否有电吹风权限
        if (objContent.hairDrierUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'hairdrider_manage'), 1)
        }

        // 是否有公话权限
        if (objContent.voipUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'phone_manage'), 1)
        }
        // 获取卡业务id
        let cardId = deleteRouter(router.options.currentMenuList, 'card_manage')
        // 获取卡业务子节点
        let cardList = router.options.currentMenuList[cardId].list;
        // 是否有ID发卡权限
        if (objContent.isIdCardMode != 1) {
          // 人卡绑定
          router.options.currentMenuList[cardId].list.splice(deleteRouter(cardList, 'card_bind'), 1)
        } else {
          console.log(router.options.currentMenuList[cardId])
          // 无卡现金充值
          router.options.currentMenuList[cardId].list.splice(deleteRouter(cardList, 'recharge_manage'), 1)
          // 无卡减款
          router.options.currentMenuList[cardId].list.splice(deleteRouter(cardList, 'rebates_manage'), 1)
          // // 无卡现金充值类型
          // router.options.currentMenuList[cardId].list.splice(deleteRouter(cardList, 'card_recharge'), 1)
          // // 无卡减款
          // router.options.currentMenuList[cardId].list.splice(deleteRouter(cardList, 'card_rebates'), 1)
          // // 无卡减款类型
          // router.options.currentMenuList[cardId].list.splice(deleteRouter(cardList, 'card_rebates'), 1)
        }
        // 是否有缴费权限
        if (objContent.paymentUse != 1) {
          router.options.currentMenuList.splice(deleteRouter(router.options.currentMenuList, 'user_payment_config'), 1)
        }

        // 是否有空调权限
        if (objContent.airUse != 1) {}
        // 是否有归宿终端权限
        if (objContent.destinationTerminalUse != 1) {}
        // 是否有无人售货机权限
        if (objContent.vendingMachineUse != 1) {}
        // 是否有直饮水机权限
        if (objContent.greenbUse != 1) {}
        //  是否有本地一卡通
        if (objContent.oneCardSolutionUse != 1) {}

        toRouter(to, next, router.options.currentMenuList)
      }
    } else {
      toRouter(to, next)
    }
  }
})
// 路由权限函数
function toRouter(to, next, listData) {
  // 还没有获取用户权限，则请求后台获取权限
  if (!userPermissionList) {
    console.log('请求用户权限')
    http({
      url: http.adornUrl('/sys/get-resource-permission-resource'),
      method: 'post',
      async: false,
      data: http.adornData({
        messageContent: sessionStorage.getItem('administrator'),
        // messageType: this.messageType
      })
    }).then(({
      data
    }) => {
      if (data && data.messageCode === 200) {
        userPermissionList = ['login'] // 登录后有登录的权限
        if (data.messageContent) {
          for (var i = 0; i < data.messageContent.length; i++) {
            userPermissionList.push(data.messageContent[i].permissionCode)
          }
        }
        console.log(userPermissionList, 1533)
        if (listData) {
          createRouteAndMenu(listData)
        } else {
          createRouteAndMenu()
        }
        next({
          ...to,
          replace: true
        })
      } else {
        sessionStorage.setItem('menuList', '[]')
        sessionStorage.setItem('permissions', '[]')
        next()
      }
    }).catch((e) => {
      console.log(`%c${e} 请求菜单列表和权限失败，跳转至登录页！！`, 'color:blue')
      router.push({
        name: 'login'
      })
    })
  } else {
    if (listData) {
      createRouteAndMenu(listData)
    } else {
      createRouteAndMenu()
    }
    next({
      ...to,
      replace: true
    })
  }
}

// 过滤侧边设备权限
function deleteRouter(arr, perms) {
  let eindex;
  arr.some((item, index) => {
    if (item.perms == perms) {
      console.log(index)
      eindex = index;
      return true;
    };
  })
  return eindex;
}
// 请求侧边设备权限数据
function getIsManagement(unitGuid, userGuid) {
  return new Promise(function (resolve, reject) {
    http({
      url: http.adornUrl('/manager/unit-config'),
      method: 'post',
      async: false,
      data: http.adornData({
        messageContent: {
          unitGuid: unitGuid,
          userGuid: userGuid,
        },
      })
    }).then(({
      data
    }) => {
      if (data && data.messageCode === 200) {
        resolve(data)
      } else {}
    }).catch((e) => {
      console.log(`%c${e} 请求菜单列表和权限失败，跳转至登录页！！`, 'color:blue')
      reject(e)
    })
  });
}

function createRouteAndMenu(Rlist) {
  if (!Rlist) {
    var currentMenuList = JSON.parse(JSON.stringify(allMenuList)) // 深拷贝
  } else {
    var currentMenuList = Rlist;
  }
  // console.log('%c!<-------------------- 动态(菜单)路由数据 -------------------->', 'color:blue')
  // var showAll = false
  var showAll = false
  if (showAll) {
    fnAddDynamicMenuRoutes(allMenuList) // 显示所有菜单
  } else {
    // 根据当前状态动态显示
    // 查询权限内的路由
    var unitType = sessionStorage.getItem('unitType')
    var unitGuid = sessionStorage.getItem('unitGuid')
    var userGuid = sessionStorage.getItem('administrator')
    if (unitType == 1) {
      unitType = 'system'
    } else if (unitType == 50) {
      unitType = 'agent'
    } else if (unitType == 100) {
      unitType = 'syschool'
    } else {
      unitType = 'unknown'
    }
    dynamicRouteList = []
    fnAddDynamicMenuRoutes1(userPermissionList, currentMenuList, unitType)

    // 过滤权限外的菜单
    filterMenuTree(currentMenuList)

    mainRoutes.name = 'main-dynamic'
    mainRoutes.children = dynamicRouteList
    router.addRoutes([
      mainRoutes,
      {
        path: '*',
        redirect: {
          name: '404'
        }
      }
    ])
  }
  // 隐藏menuId == 2271 路由，角色添加
  currentMenuList.map((item, index) => {
    if (item.menuId == 2271) {
      currentMenuList.splice(index, 1)
    }
  })
  // 隐藏menuId == 2272 路由,角色修改
  currentMenuList.map((item, index) => {
    if (item.menuId == 2272) {
      currentMenuList.splice(index, 1)
    }
  })
  router.options.isAddDynamicMenuRoutes = true
  // router.options.currentMenuList = currentMenuList;
  sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]'))
  sessionStorage.setItem('menuList', JSON.stringify(currentMenuList || '[]'))
  sessionStorage.setItem('permissions', JSON.stringify(userPermissionList || '[]'))
}

/**
 * 判断当前路由类型, global: 全局路由, main: 主入口路由
 * @param {*} route 当前路由
 */
function fnCurrentRouteType(route, globalRoutes = []) {
  var temp = []
  for (var i = 0; i < globalRoutes.length; i++) {
    if (route.path === globalRoutes[i].path) {
      return 'global'
    } else if (globalRoutes[i].children && globalRoutes[i].children.length >= 1) {
      temp = temp.concat(globalRoutes[i].children)
    }
  }
  return temp.length >= 1 ? fnCurrentRouteType(route, temp) : 'main'
}
/**
 * 添加动态(菜单)路由
 * @param {*} menuList 菜单列表
 * @param {*} routes 递归创建的动态(菜单)路由
 */
function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
  var temp = []
  for (var i = 0; i < menuList.length; i++) {
    if (menuList[i].list && menuList[i].list.length >= 1) {
      temp = temp.concat(menuList[i].list)
    } else if (menuList[i].url && /\S/.test(menuList[i].url)) {
      menuList[i].url = menuList[i].url.replace(/^\//, '')
      var route = {
        path: menuList[i].url.replace('/', '-'),
        component: null,
        name: menuList[i].url.replace('/', '-'),
        meta: {
          menuId: menuList[i].menuId,
          title: menuList[i].name,
          isDynamic: true,
          isTab: true,
          iframeUrl: ''
        }
      }
      // url以http[s]://开头, 通过iframe展示
      if (isURL(menuList[i].url)) {
        route['path'] = `i-${menuList[i].menuId}`
        route['name'] = `i-${menuList[i].menuId}`
        route['meta']['iframeUrl'] = menuList[i].url
      } else {
        try {
          // route['component'] = _import(`modules/${menuList[i].url}`) || null

          route['component'] = _import(`${menuList[i].url}`) || null
          // console.log(route['component'])
        } catch (e) {}
      }
      routes.push(route)
    }
  }
  if (temp.length >= 1) {
    fnAddDynamicMenuRoutes(temp, routes)
  } else {
    mainRoutes.name = 'main-dynamic'
    mainRoutes.children = routes
    router.addRoutes([
      mainRoutes,
      {
        path: '*',
        redirect: {
          name: '404'
        }
      }
    ])
    sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]'))
    // console.log('\n')
    // console.log('%c!<-------------------- 动态(菜单)路由 s -------------------->', 'color:blue')
    // console.log(mainRoutes.children)
    // console.log('%c!<-------------------- 动态(菜单)路由 e -------------------->', 'color:blue')
  }
}

/**
 * 添加动态(菜单)路由
 * @param {*} menuList 菜单列表
 * @param {*} routes 递归创建的动态(菜单)路由
 */
function fnAddDynamicMenuRoutes1(permissionList, menuList, unitType) {
  for (var i = 0; i < menuList.length; i++) {
    if (unitType && menuList[i].type && unitType.indexOf(menuList[i].type) < 0) {
      continue // 有类型，且不满足当前，则跳过不处理
    }

    if (menuList[i].list && menuList[i].list.length >= 1) {
      // 有子节点，则递归处理
      fnAddDynamicMenuRoutes1(permissionList, menuList[i].list)
    }
    if (menuList[i].url && /\S/.test(menuList[i].url) && permissionList.indexOf(menuList[i].perms) > -1) { // 判断当前是否有权限
      // 当前路由有权限，加入到列表中
      menuList[i].url = menuList[i].url.replace(/^\//, '') // 不懂
      var route = {
        path: menuList[i].url.replace('/', '-'),
        component: null,
        name: menuList[i].url.replace('/', '-'),
        meta: {
          menuId: menuList[i].menuId,
          title: menuList[i].name,
          isDynamic: true,
          isTab: true,
          iframeUrl: ''
        }
      }

      // url以http[s]://开头, 通过iframe展示
      if (isURL(menuList[i].url)) {
        route['path'] = `i-${menuList[i].menuId}`
        route['name'] = `i-${menuList[i].menuId}`
        route['meta']['iframeUrl'] = menuList[i].url
      } else {
        try {
          // route['component'] = _import(`modules/${menuList[i].url}`) || null
          route['component'] = _import(`${menuList[i].url}`) || null
        } catch (e) {}
      }

      dynamicRouteList.push(route)
    }
  }
}

// 清除没有权限的菜单
function filterMenuTree(menuList) {
  // console.log(hasMenu)
  var hasMenu = false;
  for (var i = menuList.length - 1; i >= 0; i--) {
    var hasChild = false;
    if (menuList[i].list && menuList[i].list.length >= 1) {
      // 有子节点，则递归处理
      hasChild = filterMenuTree(menuList[i].list)
    }
    // 检测菜单要不要显示
    var display = false
    if (hasChild) {
      display = true // 有叶子节点，当前节点必须显示
    } else {
      // 检测当前菜单是否存在路由，有则需要显示
      for (var j = 0; j < dynamicRouteList.length; j++) {
        if (dynamicRouteList[j].meta.menuId == menuList[i].menuId) {
          display = true
          break
        }
      }
    }

    if (display) {
      hasMenu = true
    } else {
      // 不用显示，删除掉
      menuList.splice(i, 1)
    }
  }
  return hasMenu
}

export default router
